In the storage architecture of the multiple storage controllers multiple storage controllers, volume is a kind of logical medium for storing data. Each volume is labeled with a unique identity (ID) for differentiation. Each volume can be divided into a plurality of blocks with the same size. Block is the smallest storage unit for storing data. The blocks into which one volume is divided can be distributed to a plurality of storage controllers in the storage architecture, so that one block corresponds to one storage controller. Each storage controller can be connected to a server through a switch. When the server needs to write data into a volume, each of the storage controllers can simultaneously write data on the server to the blocks into which that volume is divided; when the server needs to read data from a volume, each of the storage controllers can simultaneously read data from the blocks into which that volume is divided and return data to the server. The simultaneous processing of a plurality of storage controllers helps to achieve better performance.
The server can sometimes read data from or write data into one block of a volume. For example, when the server receives an external input command or runs a certain program, it can send a data reading request or a data writing request carrying an access offset of the volume to the storage controller that maps the volume ID of the volume (each storage controller maps one or more volume IDs on the server); the storage controller determines which block the server needs to access according to the access offset and therefore finds the storage controller corresponding to the block which the server needs to access. If the found storage controller is another storage controller, the data reading request or the data writing request will be forwarded, through the high-speed link wire between storage controllers, to a corresponding storage controller to process. The corresponding storage controller can write the data on the server into the block which the server needs to access according to the writing request of the server, or, read the data from the block which the server needs to access according to the reading request of the server and return the data to the server, thereby achieving the objective that the server accesses a volume.
As such, when the storage controller corresponding to a block which the server needs to access is another storage controller but not the storage controller that conducts the query, the data reading request or the data writing request of the server needs to be forwarded to the corresponding storage controller, enlarging the time delay when the data reading request or the data writing request reaches the block that needs to be accessed. In addition, the storage controller needs to temporarily store the data reading request or the data writing request and then implement forward the request, occupying the memory resources of the server.